Thermal print head control for printing serial bar codes

ABSTRACT

A printer for printing serial bar codes on a web of record members with a thermal print head is shown. The thermal print head is driven by a series of pulses having a constant duty cycle for each row of information printed. However, the number of pulses in the series is varied from row to row, in accordance with the status of the current row being printed as a bar row or a space row; with the status of at least one row immediately preceding the current row and at least one row immediately succeeding the current row; and with the number of bar rows previously printed. By varying the number of pulses applied to the thermal print head and thus the amount of energy applied thereto, discontinuities in the serial bar code and any information, such as a human readable character, printed adjacent thereto are minimized.

This is a continuation of application Ser. No. 07/306,371 filed Feb. 3,1989, now U.S. Pat. No. 5,400,058.

TECHNICAL FIELD

The present invention relates to a printer for printing information inrows on a web of record members with a thermal print head wherein theinformation includes a serial bar code formed of bars and spaces in theinformation rows and, more particularly, to such a printer having asystem for controlling the amount of energy applied to the thermal printhead such that the amount of energy varies for each row in accordancewith the status of the row as a bar row or a space row; with the statusof at least one immediately preceding and one immediately succeedingrows; and with the number of bar rows previously printed in order toeliminate discontinuities in the serial bar code as well as ininformation, such as human readable characters, printed adjacentthereto.

BACKGROUND OF THE INVENTION

Printers that include a thermal print head for printing information on aweb of record members, such as labels, are known. One such type ofprinter is a thermal direct printer utilizing heat sensitive paper onwhich printing Is directly carried out by the thermal print head. Suchprinters have been known to employ a thermal print head having a seriesof print elements aligned In a row wherein each element produces heat inresponse to energy applied thereto in order to print a dot. Such printelements may be resistors or the like to which a pulsed signal isapplied to drive the print elements to print. In order to control theamount of energy applied to the print elements of a thermal print head,known systems have controlled the width or amplitude of the pulsesapplied thereto.

In another known system, a fixed number of pulses of a calculated dutycycle are applied to the thermal print head to print each row, whereinthe duty cycle is calculated in response to measured, initial values ofthe thermal print head resistance and temperature as well as the inputvoltage applied to the thermal print head. In this system, the amount ofenergy applied to all print elements is made fixed so as to enable theprinter to print narrow bars having a width as nominal as possible. Thissystem works well for printing parallel bar codes as shown in FIG. 2 inwhich the length of the bars forming the code extends parallel to thedirection of movement of the stock on which the information is printed.However, this system has several problems in printing serial bar codesin which the length of the bars forming the code extends perpendicularto the direction of movement of the stock as shown in FIG. 3. One suchproblem is that the serial bar code, and human readable characters ifany, appear to be lighter when printed with this system. Further, inprinting wide bars which are formed by printing narrow bars side byside, discontinuities such as a gap in the wide bar can result as shownin FIG. 4. These gaps result in wide bars that appear light. When humanreadable characters are printed adjacent to the serial code as shown inFIG. 5, discontinuities in the characters can result too. Suchdiscontinuities include variations in the darkness of the dots formingportions of a character wherein lighter dots result in those portions ofthe character that are in a row adjacent to a space of the serial barcode, darker dots resulting in those portions of the character that arein a row adjacent to a bar of the serial bar code, In addition, it hasbeen found that with this system the width of each bar printed increasesacross the length of the serial bar code or label. As information isbeing printed, each energized printing element loses heat to the areasurrounding the element. This localized, short term temperature increasein the surrounding area results in succeeding information rows startingat a higher temperature than the initial temperature from which the dutycycle is calculated. Because succeeding rows start at a highertemperature, the width of dots printed in each succeeding row increases.

SUMMARY OF THE INVENTION

In accordance with the present invention, the disadvantages of priorprinters with thermal print heads in printing serial bar codes, asdiscussed above, have been overcome. The printer of the presentinvention includes a system for controlling the amount of energy appliedto the thermal print head for printing a serial bar code such that theamount of energy varies for each row in accordance with the status ofthe row as a bar row or a space row; with the status of at least oneimmediately preceding and one immediately succeeding rows; and with thenumber of bar rows previously printed in order to eliminatediscontinuities in the serial bar code and in information, such as humanreadable characters, printed adjacent thereto.

More particularly, the printer of the present invention includes athermal print head having a number of printing elements aligned in a rowfor printing a row of information. Means are provided for applyingenergy to the thermal print head to cause the print elements to print abar of a serial bar code, and a portion of a human readable character ifany, in a row. More particularly, the drive means applies a series ofpulses to each print element that is to be on to print in a given row,wherein the duty cycle of the pulses is constant from row to row but thenumber of pulses in the series is variable. The number of pulses appliedto the thermal print head to print each row is determined by acontroller to vary the amount of energy applied to the thermal printhead.

The amount of energy applied to the thermal print head for a bar row isdetermined by the number of preceding bar rows printed wherein thisamount of energy forms a base value for the bar row. The base valueamount of energy is such that it decreases in an approximatelyexponential manner with increasing number of previously printed barrows. The base value amount of energy for a bar row is modified by acompensation factor if either the row immediately preceding or the rowimmediately succeeding is also a bar row. If the row immediatelysucceeding the current row is also a bar row, the controller increasesthe base value amount of energy by a first compensation factor. If therow immediately succeeding the current row is a space row but the rowimmediately preceding the current row is a bar row, the controllerdecreases the base value amount of energy by a second compensationfactor.

The amount of energy applied to the thermal print head for each rowdetermined to be a space row and having a portion of a human readablecharacter therein is fixed at a high level in order to eliminatediscontinuities in any portion of a human readable character formed in arow with a space of the serial bar code.

In order to determine whether an information row is a bar row or a spacerow, the number of print elements to be on for each row is determinedand compared to a threshold value. The row is identified as a space rowif the number of on print elements is less than the threshold value andthe row is identified as a bar row if the number of on elements isgreater than or equal to the threshold value. The threshold value may beset equal to the number of elements required to be on to print a bar ofthe serial bar code, that number defining the height of the bar code. Inthe preferred embodiment, however, the threshold value is less than thenumber of elements defining the height of a bar since it has been foundthat any time a significant number of dots is printed in a row, whetherthose dots are associated with a bar or a human readable character, atemperature rise results which should be compensated for.

These and other objects, advantages and novel features of the presentinvention, as well as details of an illustrated embodiment thereof willbe more fully understood from the following description and the drawing.

BRIEF DESCRIPTION OF THE DRAWING

FIG. 1 is a block diagram of the printer of the present invention;

FIG. 2 is an illustration of parallel bar codes printed on stock movingin the direction of the arrow;

FIG. 3 is an illustration of serial bar codes printed on stock moving inthe direction of the arrow;

FIG. 4 is an illustration of a serial bar code with wide bars havinggaps therein;

FIG. 5 is an illustration of a serial bar code with adjacent humanreadable characters having discontinuities therein;

FIG. 6 is a graph illustrating the number of pulses applied to thethermal print head of FIG. 1 to print each bar row as a function of thenumber of bar rows printed;

FIG. 7a illustrates a wide bar having a gap therein;

FIG. 7b illustrates a wide bar formed of overlapping bar rows inaccordance with the present invention; and

FIG. 8 is a flow chart illustrating the software routine that determinesthe amount of energy to be applied to the thermal print head shown inFIG. 1.

DESCRIPTION OF THE PREFERRED EMBODIMENT

The printer of the present invention is illustrated in the block diagramof FIG. 1 for printing information on a web of record members such aspaper stock on which labels are carried. The printer includes a thermalprint head 10 having a series of print elements 10' such as resistors orthe like that are aligned in a single straight row. When each printelement is energized, the print element generates heat in accordancewith the amount of energy applied thereto. The heat generated by anenergized print element causes a dot to be printed on heat sensitivestock wherein the width of the printed dot increases with increasingtemperatures. The stock employed with the thermal print head 10 may be aheat sensitive paper stock or a heat sensitive synthetic label stockeach of which requires a different temperature to print a dot of thesame width as discussed in detail below. The present invention isequally applicable to non-direct or thermal transfer types of printingalso.

The printer of the present invention includes a microprocessor 12 thatcontrols a stepper motor 14 through an interface 16 to move the stock ina direction perpendicular to the line of print elements 10' of thethermal print head 10 to print information on a label. Themicroprocessor 12 also controls a liquid crystal display, LCD 18 throughan LCD driver 20 to display various prompts to a user of the printer.The user may respond to displayed prompts via a keyboard 22 coupled tothe microprocessor 12 through the interface 16. The microprocessor 12 isfurther coupled to a thermal print head control 24 that is responsivethereto to drive the thermal print head 10, as powered by a battery 26,to print information on a label. The output of the battery 26 is alsoapplied to a voltage regulator 28 that provides +5 volts to themicroprocessor 12.

The microprocessor 12 controls the thermal print head control 24, thestepper motor 14 and the LCD display 18 in accordance with softwarestored in a read only memory, ROM 30. The microprocessor 12 utilizesportions of a random access memory RAM 32 as working registers in whichdata is manipulated. Another portion of the RAM 32 is utilized to storea bit mapped image of information to be printed on a label wherein eachbit identifies whether a particular print element associated therewithshould be on or off for a given row of information forming the label.When printing a serial bar code, each row of information may include abar or a space and a portion of a human readable character, suchcharacters generally spanning a number of rows of information formingthe label. To print a row of information, the microprocessor 12 couplesa bit mapped image of the row from the RAM 32 to the thermal print headcontrol 24 which responds thereto by applying energy from the battery 26to the print elements of the thermal print head 10 that are identifiedas being on for the row. More particularly, the thermal print headcontrol 24 drives the print elements of the thermal print head 10 toprint by applying a series of pulses thereto for each row. The dutycycle of the pulses applied to the print elements for each row iscalculated from the initial values of the thermal print head resistanceand temperature, these values being coupled to the microprocessor 12 onlines 34 and 36 and further in response to the input voltage applied tothe thermal print head 10 from the battery 26 as coupled to themicroprocessor 12 via line 38. The microprocessor 12 controls thethermal print head control 24 to vary the number of pulses in the seriesapplied to the thermal print head 10 for each row of information to beprinted in accordance with the status of the row of information as a barrow or a space row; with the status of the rows immediately precedingand immediately succeeding the row to be printed; and with the number ofbar rows previously printed as discussed in detail below with referenceto FIG. 8.

The printer shown in FIG. 1, under the control of the microprocessor 12operating in accordance with the flow chart shown in FIG. 8, may print aparallel bar code as shown in FIG. 2 wherein the length of the barsforming the code extends parallel to the direction of movement of thestock indicated by the arrow. The printer may also print a serial barcode as shown in FIG. 3 in which the length of the bars forming the codeextends perpendicular to the direction of movement of the stockindicated by the arrow without the discontinuities depicted in FIG. 4and FIG. 5 that can result with prior printers. The discontinuitieseliminated by the printer of the present invention include gaps 40 inthe wide bars 42 and lighter portions 44 in the human readablecharacters 46 wherein the lighter portions 44 are in the same row as aspace 48 of the serial bar code printed adjacent thereto. The printer ofthe .present invention further insures that the width of each bar rowremains substantially constant across the entire length of the bar codeor label by decreasing the number of pulses, N, applied to the thermalprint head 10 as the number of bar rows printed increases. Since it hasbeen found that the increase in temperature in the area surrounding aprint element, when energized, increases exponentially, the number ofpulses applied to the thermal print head control for each succeeding barrow printed, decreases in a substantially exponential manner as shown inFIG. 6. To provide the exponentially decreasing number of pulses foreach succeeding bar row, the microprocessor 12 utilizes Tables I and IIbelow.

                                      TABLE I                                     __________________________________________________________________________    TABLE                                                                         POSITION                                                                            0    1   2   3   4   5   6    7   8   9   10   11   12                  __________________________________________________________________________    ROW   SPACE                                                                              1ST 2ND 3RD 4TH-                                                                              16TH-                                                                             41ST-                                                                              71ST                                                                              101ST-                                                                            131ST-                                                                            +    -    PARAL-                    ROW  BAR BAR BAR 15TH                                                                              40TH                                                                              70TH 100TH                                                                             130TH                                                                             UP  COMP.                                                                              COMP.                                                                              LEL                            ROW ROW ROW BAR BAR BAR  BAR BAR BAR FAC- FAC- PRINT-                                     ROWS                                                                              ROWS                                                                              ROWS ROWS                                                                              ROWS                                                                              ROWS                                                                              TOR  TOR  ING                 A. SYN-                                                                             60   61  59  58  56  54  52   51  50  49  12   9    60                  THETIC                                                                        STOCK                                                                         B. PAPER                                                                            56   57  55  54  52  50  48   47  46  45  12   9    56                  STOCK                                                                         __________________________________________________________________________

                  TABLE II                                                        ______________________________________                                        P     C        S     TABLE I POSITION                                         ______________________________________                                        0     1        1     10                                                       1     1        1     10                                                       1     1        0     11                                                       0     1        0     NO COMPENSATION FACTOR                                   ______________________________________                                    

Table I contains the base number of pulses to be applied to the thermalprint head for serial bar codes, parallel bar codes or non-bar codecharacters that are to be printed on either synthetic stock or paperstock. More particularly, for each space row of a serial bar code, thenumber of pulses applied to each element of the thermal print head 10when printing on synthetic stock is 60; whereas, the number of pulsesapplied to the thermal print head 10 when printing on paper stock is 56.These base numbers of pulses for a space row are sufficiently high invalue to minimize discontinuities in those portions of a human readablecharacter in the same row as a space of the adjacent serial bar code.The first, second and third bar rows printed for a serial bar code on alabel have decreasing base numbers of pulses 61, 59 and 58 for syntheticstock and 57, 55 and 54 for paper stock as shown respectively atpositions 1, 2 and 3 in Table I. The fourth through fifteenth bar rowsprinted for a serial bar code have the same base number of pulses, 56for synthetic stock and 52 for paper stock, as shown at position 4 inTable I. Similarly, the sixteenth through fortieth bar rows have thesame base number of pulses, 54 for synthetic stock and 50 for paperstock, as shown in the fifth position of Table I; the forty-firstthrough seventieth bar rows have the same base number of pulses, 52 forsynthetic stock and 48 for paper stock, as shown in the sixth positionof Table I; the seventy-first through one-hundredth bar rows have thesame base number of pulses, 51 for synthetic stock and 47 for paperstock, as shown in the seventh position of Table I; the one-hundred andfirst through one-hundred and thirtieth bar rows have the same basenumber of pulses, 50 for synthetic stock and 46 for paper stock, asshown in the eighth position of Table I; and the one-hundred andthirty-first bar row and each bar row succeeding the one-hundred andthirty-first bar row have the same base number of pulses, 49 forsynthetic stock and 45 for paper stock, as shown in the ninth positionof Table I. The base number of pulses applied to the thermal print head10 for a serial bar code may be modified by a positive compensationfactor stored at position 10 of Table I to increase the base number orby a negative compensation factor stored at position 11 of Table I todecrease the base number in accordance with the compensation table,Table II as discussed below. The data stored in position 12 of Table Irepresents the number of pulses to be applied to the thermal print head10 for each row of a parallel bar code. The data stored in position 12is also used to print labels with only non-bar code characters in theserial direction.

In Table II, C stands for the status of the current row to be printed; Pstands for the status of the row immediately preceding the current rowand S stands for the status of the row immediately succeeding thecurrent row. A "0" status identifies the row as a space row; whereas, a1" status identifies the row as a bar row. The three bits associatedwith the preceding row, current row and succeeding row are shifted intoa working register by the microprocessor 12 and used as the criteria, oras an address to Table I, for selecting a compensation factor to modifythe base number of pulses applied to the thermal print head 10 for acurrent bar row of a serial bar code.

If the current row to be printed is a bar row and the succeeding row tobe printed is also a bar row, a compensation factor of 12 is added tothe base number of pulses so as to increase the amount of energy appliedto the thermal print head in printing adjacent bar rows. This results inoverlapping bar rows as shown in FIG. 7B. As shown in FIG. 7A, a widebar 42 of a serial bar code is formed by printing two or more bars 50and 52 side by side. Without the present invention, a gap 40 can resultin the wide bar 42. The present invention when printing the wide bar 42'shown in FIB. 7B, prevents a gap from being formed therein by firstdetermining the amount of energy to be applied to the thermal print head10 for the bar 50' in accordance with whether the succeeding row 52' isalso a bar row. Since the succeeding row 52' is also a bar, acompensation factor of 12 is added to the base number of pulsesdetermined for the bar row 50'. By increasing the amount of energyapplied to the thermal print head, the width of the bar 50' is increasedover that shown for the bar 50 of FIG. 7A When printing the bar 52' themicroprocessor 12 determines whether the row succeeding the bar row 52'is also a bar row and if it is, the microprocessor 12 again increasesthe base number calculated for the bar row 52' by a factor of 12. If,however, the row succeeding the bar row 52' is a space row, themicroprocessor 12 decreases the base number of pulses by a compensationfactor of 9. This is because, the area surrounding the thermal printhead elements energized in generating the preceding bar row 50' willstill be relatively hot when the bar row 52' is printed and bar row 52'does not need to overlap a succeeding row so full power is not needed.

The microprocessor 12 operates in accordance with the flow chartdepicted in FIG. 8 to determine the number of pulses to be applied toeach thermal print head element identified to be on by the bit mappedimage of the label stored in the RAM 32 for each row of the label asfollows. The microprocessor at block 60 first determines whether thetype of stock being used is known and if not at block 62 themicroprocessor 12 controls the LCD display 18 to display a message tothe user prompting the user to enter the type of stock. When the userenters the stock type into the printer via the keyboard 22, themicroprocessor 12 proceeds to block 64 to select an energy table for theparticular type of stock being used, such as Table IA for syntheticstock or Table IB for paper stock. At block 66 the microprocessor 12determines whether a serial bar code is to be printed and if not, themicroprocessor 12 proceeds to block 68 to select the number of pulses tobe applied to the thermal print head 10 for a parallel bar code fromposition 12 of Table I. At block 70, the microprocessor 12 saves theselected value for all of the rows of the parallel code and proceeds toblock 72 to exit the routine. If, however, the microprocessor 12determines at block 66 that a serial bar code is to be printed, themicroprocessor 12 at block 71 initializes the values X and Y to X=0 andY= 1.

At block 73 the microprocessor 12 updates the row history such thatthree bits in a working register in the RAM 32 accurately represent thestatus of the preceding row, current row and immediately succeeding rowas a bar row or a space row. The microprocessor 12 determines whether arow is a bar row or a space row by counting the number of print elementsthat are to be on in printing the row as identified in the bit mappedimage of the label stored in the RAM 32. The microprocessor 12 thencompares the total number of elements to be on to a threshold value andif the number of elements to be on is less than the threshold value, therow is determined to be a space row. If the number of elements to be onis greater than or equal to the threshold value, the row is determinedto be a bar row. The threshold value may be set equal to the number ofelements that are on for printing each bar of a serial bar code, thatnumber defining the height of the bars of the code. However, in thepreferred embodiment, the threshold value is set to some value that isless than the number of print elements defining the height of a bar.This is because any time a significant number, of print elements areenergized whether a bar is printed or a human readable character alone,localized heating in the area of the thermal print head 10 occurs and itis this phenomena that the present invention compensates for. It isnoted that the status of each row as a bar row or a space row may bedetermined at the time that the bit mapped image of the label isgenerated and then stored for use when printing so as to free themicroprocessor 12 from performing this task when printing. At block 74,the microprocessor 12 determines from the updated row history whetherthe current row is a bar row or a space row.

If the current row is a bar row as determined by the microprocessor 12at block 74, at block 76 the microprocessor 12 sets X=X+1. Themicroprocessor 12 then determines whether the row immediately succeedingthe current row is a bar row or not at block 78. If the immediatelysucceeding row is a bar row, the microprocessor at block 80 sets theenergy compensation factor to T10 and at block 82 sets N=T(X)+T₁₀. If,for example, the current row is the sixth bar row to be printed, themicroprocessor 12 sets X=6 at block 76 so that T(X)=T(6)=Position 4which represents a base amount of energy equal to 56 pulses forsynthetic stock. Because the next succeeding row is a bar row, themicroprocessor sets the energy compensation factor at block 80 to thetenth position in Table I which is equal to 12 so that in the exampleN=T(X)+T₁₀ =T(6)+T₁₀ =56+12=68. At block 84, the microprocessor 12 savesthis value of N for information row Y and at block 86 sets Y=Y+1. Themicroprocessor then at block 88 determines whether Y is greater than Z,wherein Z represents the number of information rows to be printed for alabel. If Y is not greater than Z, the microprocessor returns to block73 to update the row history so that the amount of energy to be appliedto the thermal print head 10 for the next current row may be determined.

If the microprocessor 12 determines at block 74 that the current row isa bar row but determines at block 78 that the immediately succeeding rowis a space row at block 78, the microprocessor proceeds to block 90 todetermine whether the row immediately preceding the current row was abar row. If the immediately preceding row was a bar row, themicroprocessor at block 100 sets the energy compensation factor to thevalue stored at the eleventh position in Table I, i.e., 9. Themicroprocessor 12 then sets N=T (X)-T₁₁ at block 102. If the current rowagain is the sixth row, N=T(6)-T₁₁ =56-9=47. From block 102 themicroprocessor proceeds to block 84 to save this value of N for row Y.

If the microprocessor 12 at block 74 determines that the current row isa space row, the microprocessor 12 proceeds to block 106 to set N equalto the value stored at position zero in Table I, this value being 60 forsynthetic stock and 56 for paper stock. Thereafter, the microprocessor12 proceeds to block 84.

Many modifications and variations of the present invention are possiblein light of the above teachings. Thus, it is to be understood that,within the scope of the appended claims, the invention may be practicedotherwise than as described hereinabove.

What is claimed and desired to be secured by Letters Patent is:
 1. A barcode printer comprising:a motor for driving a web of record members in adirection of movement through said printer for printing on said recordmembers; a thermal print head having a plurality of print elements forprinting information in rows on said record members, said informationincluding a serial bar code having a bar or a space formed in each ofsaid rows, each information row and bar extending perpendicular to thedirection of movement of said web; means for applying energy to saidthermal print head to drive said thermal print head to print; means fordetermining the number of print elements to be turned on to print aninformation row on a record member; means for comparing to a referencevalue the number of print elements to be turned on to print aninformation row to identify each information row as a bar row or a spacerow; and means for controlling said energy applying means to apply aconstant amount of energy to print information in each information rowidentified as a space row and to apply an amount of energy to print abar row that varies in accordance with the number of bar rows previouslyprinted.
 2. A bar code printer as recited in claim 1 wherein saidreference value is equal to the number of print elements turned on toprint each bar of a serial bar code.
 3. A bar code printer as recited inclaim 1 wherein said reference value is less than the number of printelements turned on to print each bar of a serial bar code.
 4. A bar codeprinter as recited in claim 1 including means for storing datarepresenting the identity of a plurality of information rows as a barrow or a space row, said data being stored for the current informationrow, at least one information row preceding said current row and atleast one information row succeeding said current row and said controlmeans modifying said amount of energy to be applied for a current barrow in accordance with said data stored for said current, preceding andsucceeding information rows.
 5. A bar code printer comprising:a motorfor driving a web of record members in a direction of movement throughsaid printer for printing on said record members; a thermal print headhaving a plurality of print elements for printing information in rows onsaid record members, said information including a parallel bar codehaving bars extending parallel to the direction of movement of said weband perpendicular to said information rows or a serial bar code havingbars extending perpendicular to the direction of movement of said weband in the same direction as said information rows; means for applyingenergy to said thermal print head to drive said thermal print head toprint; means for determining whether a parallel bar code or a serial barcode is to be printed; means for identifying each information row of aserial bar code as a bar row or a space row; and means for controllingsaid energy applying means to apply an amount of energy to print eachinformation row of a parallel bar code such that said amount of energydoes not vary from information row to information row of said parallelbar code and to apply a nonconstant amount of energy to print theinformation rows of a serial bar code identified as bar rows.
 6. A barcode printer as recited in claim 5 wherein said means for identifyingeach information row of a serial bar code as a bar row or a space rowincludes means for determining the number of print elements to be turnedon to print an information row on a record member; and means forcomparing to a reference value the number of print elements to be turnedon to print an information row to identify each information row as a barrow or a space row.
 7. A bar code printer as recited in claim 6 whereinsaid reference value is equal to the number of print elements turned onto print each bar of a serial bar code.
 8. A bar code printer as recitedin claim 6 wherein said reference value is less than the number of printelements turned on to print each bar of a serial bar code.
 9. A bar codeprinter as recited in claim 5 wherein said control means varies theamount of energy to print a bar row of a serial bar code in accordancewith the number of bar rows previously printed.
 10. A bar code printeras recited in claim 9 including means for storing data representing theidentity of a plurality of information rows as a bar row or a space rowsaid data being stored for the current information row, at least oneinformation row preceding said current row and at least one informationrow succeeding said current row and said control means modifying saidamount of energy to be applied for a current bar row in accordance saiddata stored for said current, preceding and succeeding information rows.11. A bar code printer comprising:a motor for driving a web of recordmembers in a direction of movement through said printer for printing onsaid record members; a thermal print head having a plurality of printelements for printing information in rows on said record members, saidinformation including a serial bar code having a bar or a space formedin each of said rows, each information row and bar extendingperpendicular to the direction of movement of said web; means forapplying energy to said thermal print head to drive said thermal printhead to print; means for determining the number of print elements to beturned on to print an information row on a record member; means forcomparing to a reference value the number of print elements to be turnedon to print an information row to identify each information row as a barrow or a space row; means for storing data for a plurality ofinformation rows, said data stored for each row representing theidentity of the row as a bar row or a space row; and means forcontrolling said energy applying means to apply an amount of energy toprint a bar row that varies in accordance with the number of bar rowspreviously printed and that varies with said data stored for a pluralityof information rows.